#ifndef GOVERNMENT_HPP_INCLUDED
#define GOVERNMENT_HPP_INCLUDED

#include "SDL.h"

#include "formula_callable.hpp"
#include "government_fwd.hpp"

class government : public game_logic::formula_callable
{
public:
	government();
	int treasury() const { return treasury_; }
	void get_money(int amount) { treasury_ += amount; }
	std::string generate_city_name();
	const std::vector<std::string>& can_recruit() const { return can_recruit_; }

	bool is_unshrouded(int x, int y) const;
	void unshroud(int x, int y);

	const SDL_Color& color() const { return color_; }
private:
	variant get_value(const std::string& str) const;
	int treasury_;
	std::vector<std::string> city_names_;
	int city_name_index_;
	std::vector<std::string> can_recruit_;

	std::vector<std::vector<bool> > unshrouded_;

	SDL_Color color_;
};

#endif
